{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "a239913a-b27f-15e7-8911-53b62bf41c4e"
   },
   "source": [
    "# Practical 10: Case Study - Credit Card Fraud Detection\n",
    "\n",
    "\n",
    "Upon completion of this session you should be able to:\n",
    "- understand how to test different methods on skewed data.\n",
    "- be able to apply cross validation and hyperparameter tuning in Python.\n",
    "\n",
    "---\n",
    "- Materials in this module include resources collected from various open-source online repositories.\n",
    "- Jupyter source file can be downloaded from https://github.com/gaoshangdeakin/SIT384-Jupyter\n",
    "- If you found any issue/bug for this document, please submit an issue at [https://github.com/gaoshangdeakin/SIT384/issues](https://github.com/gaoshangdeakin/SIT384/issues)\n",
    "\n",
    "\n",
    "---\n",
    "\n",
    "\n",
    "This practical will test different methods on skewed data. The idea is to compare if preprocessing techniques work better when there is an overwhelming majority class that can disrupt the efficiency of our predictive model.\n",
    "\n",
    "You will also be able to see how to apply cross validation for hyperparameter tuning on different classification models. The intention is to create models using:\n",
    "\n",
    "1. Logistic Regression\n",
    "\n",
    "\n",
    "## Background\n",
    "\n",
    "## Tasks\n",
    "\n",
    "## Summary\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-03T16:05:43.790796Z",
     "start_time": "2018-11-03T16:05:43.778100Z"
    },
    "_cell_guid": "029ecde6-086d-7a8e-de44-363a7a23dbd8"
   },
   "outputs": [],
   "source": [
    "from __future__ import division\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "b4de5f93-d467-ad7d-4597-03d5f3e89f86"
   },
   "source": [
    "# <span style=\"color:#0b486b\">Loading the dataset</span>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-03T15:54:12.238585Z",
     "start_time": "2018-11-03T15:54:04.176102Z"
    },
    "_cell_guid": "7e5ca1e3-3597-19d2-b4be-dffd335df630"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Time</th>\n",
       "      <th>V1</th>\n",
       "      <th>V2</th>\n",
       "      <th>V3</th>\n",
       "      <th>V4</th>\n",
       "      <th>V5</th>\n",
       "      <th>V6</th>\n",
       "      <th>V7</th>\n",
       "      <th>V8</th>\n",
       "      <th>V9</th>\n",
       "      <th>...</th>\n",
       "      <th>V21</th>\n",
       "      <th>V22</th>\n",
       "      <th>V23</th>\n",
       "      <th>V24</th>\n",
       "      <th>V25</th>\n",
       "      <th>V26</th>\n",
       "      <th>V27</th>\n",
       "      <th>V28</th>\n",
       "      <th>Amount</th>\n",
       "      <th>Class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.359807</td>\n",
       "      <td>-0.072781</td>\n",
       "      <td>2.536347</td>\n",
       "      <td>1.378155</td>\n",
       "      <td>-0.338321</td>\n",
       "      <td>0.462388</td>\n",
       "      <td>0.239599</td>\n",
       "      <td>0.098698</td>\n",
       "      <td>0.363787</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.018307</td>\n",
       "      <td>0.277838</td>\n",
       "      <td>-0.110474</td>\n",
       "      <td>0.066928</td>\n",
       "      <td>0.128539</td>\n",
       "      <td>-0.189115</td>\n",
       "      <td>0.133558</td>\n",
       "      <td>-0.021053</td>\n",
       "      <td>149.62</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.191857</td>\n",
       "      <td>0.266151</td>\n",
       "      <td>0.166480</td>\n",
       "      <td>0.448154</td>\n",
       "      <td>0.060018</td>\n",
       "      <td>-0.082361</td>\n",
       "      <td>-0.078803</td>\n",
       "      <td>0.085102</td>\n",
       "      <td>-0.255425</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.225775</td>\n",
       "      <td>-0.638672</td>\n",
       "      <td>0.101288</td>\n",
       "      <td>-0.339846</td>\n",
       "      <td>0.167170</td>\n",
       "      <td>0.125895</td>\n",
       "      <td>-0.008983</td>\n",
       "      <td>0.014724</td>\n",
       "      <td>2.69</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.358354</td>\n",
       "      <td>-1.340163</td>\n",
       "      <td>1.773209</td>\n",
       "      <td>0.379780</td>\n",
       "      <td>-0.503198</td>\n",
       "      <td>1.800499</td>\n",
       "      <td>0.791461</td>\n",
       "      <td>0.247676</td>\n",
       "      <td>-1.514654</td>\n",
       "      <td>...</td>\n",
       "      <td>0.247998</td>\n",
       "      <td>0.771679</td>\n",
       "      <td>0.909412</td>\n",
       "      <td>-0.689281</td>\n",
       "      <td>-0.327642</td>\n",
       "      <td>-0.139097</td>\n",
       "      <td>-0.055353</td>\n",
       "      <td>-0.059752</td>\n",
       "      <td>378.66</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.966272</td>\n",
       "      <td>-0.185226</td>\n",
       "      <td>1.792993</td>\n",
       "      <td>-0.863291</td>\n",
       "      <td>-0.010309</td>\n",
       "      <td>1.247203</td>\n",
       "      <td>0.237609</td>\n",
       "      <td>0.377436</td>\n",
       "      <td>-1.387024</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.108300</td>\n",
       "      <td>0.005274</td>\n",
       "      <td>-0.190321</td>\n",
       "      <td>-1.175575</td>\n",
       "      <td>0.647376</td>\n",
       "      <td>-0.221929</td>\n",
       "      <td>0.062723</td>\n",
       "      <td>0.061458</td>\n",
       "      <td>123.50</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-1.158233</td>\n",
       "      <td>0.877737</td>\n",
       "      <td>1.548718</td>\n",
       "      <td>0.403034</td>\n",
       "      <td>-0.407193</td>\n",
       "      <td>0.095921</td>\n",
       "      <td>0.592941</td>\n",
       "      <td>-0.270533</td>\n",
       "      <td>0.817739</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.009431</td>\n",
       "      <td>0.798278</td>\n",
       "      <td>-0.137458</td>\n",
       "      <td>0.141267</td>\n",
       "      <td>-0.206010</td>\n",
       "      <td>0.502292</td>\n",
       "      <td>0.219422</td>\n",
       "      <td>0.215153</td>\n",
       "      <td>69.99</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Time        V1        V2        V3        V4        V5        V6        V7  \\\n",
       "0   0.0 -1.359807 -0.072781  2.536347  1.378155 -0.338321  0.462388  0.239599   \n",
       "1   0.0  1.191857  0.266151  0.166480  0.448154  0.060018 -0.082361 -0.078803   \n",
       "2   1.0 -1.358354 -1.340163  1.773209  0.379780 -0.503198  1.800499  0.791461   \n",
       "3   1.0 -0.966272 -0.185226  1.792993 -0.863291 -0.010309  1.247203  0.237609   \n",
       "4   2.0 -1.158233  0.877737  1.548718  0.403034 -0.407193  0.095921  0.592941   \n",
       "\n",
       "         V8        V9  ...         V21       V22       V23       V24  \\\n",
       "0  0.098698  0.363787  ...   -0.018307  0.277838 -0.110474  0.066928   \n",
       "1  0.085102 -0.255425  ...   -0.225775 -0.638672  0.101288 -0.339846   \n",
       "2  0.247676 -1.514654  ...    0.247998  0.771679  0.909412 -0.689281   \n",
       "3  0.377436 -1.387024  ...   -0.108300  0.005274 -0.190321 -1.175575   \n",
       "4 -0.270533  0.817739  ...   -0.009431  0.798278 -0.137458  0.141267   \n",
       "\n",
       "        V25       V26       V27       V28  Amount  Class  \n",
       "0  0.128539 -0.189115  0.133558 -0.021053  149.62      0  \n",
       "1  0.167170  0.125895 -0.008983  0.014724    2.69      0  \n",
       "2 -0.327642 -0.139097 -0.055353 -0.059752  378.66      0  \n",
       "3  0.647376 -0.221929  0.062723  0.061458  123.50      0  \n",
       "4 -0.206010  0.502292  0.219422  0.215153   69.99      0  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 218,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#The zipped data file can be retrieved from the weekly folder on clouddeakin. Not available on unit github site due to size restriction (max 25M)\n",
    "data = pd.read_csv(\"./creditcard.csv\")\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "6268bbd8-6de5-2389-5693-ecd9a14872d4"
   },
   "source": [
    "# <span style=\"color:#0b486b\">Checking the target classes</span>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-03T15:54:12.472790Z",
     "start_time": "2018-11-03T15:54:12.243294Z"
    },
    "_cell_guid": "3f6e6674-12e9-6983-5788-5755f80c7ec2"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    284315\n",
      "1       492\n",
      "Name: Class, dtype: int64\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "count_classes = pd.value_counts(data['Class'], sort = True).sort_index()\n",
    "count_classes.plot(kind = 'bar')\n",
    "plt.title(\"Fraud class histogram\")\n",
    "plt.xlabel(\"Class\")\n",
    "plt.ylabel(\"Frequency\")\n",
    "print(count_classes)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "801dd843-a90b-bb5f-97e7-2da84cc6cd6a"
   },
   "source": [
    "### Clearly the data is totally unbalanced!! \n",
    "\n",
    "This is a clear example where using a typical accuracy score to evaluate our classification algorithm. For example, if we just used a majority class to assign values to all records, we will still be having a high accuracy, BUT WE WOULD BE CLASSIFYING ALL \"1\" INCORRECTLY!!\n",
    "\n",
    "There are several ways to approach this classification problem taking into consideration this unbalance. \n",
    "\n",
    "- Collect more data? Nice strategy but not applicable in this case\n",
    "- Changing the performance metric:\n",
    "    - Use the confusion matrix to calculate Precision, Recall\n",
    "    - F1score (weighted average of precision recall)\n",
    "    - Use Kappa - which is a classification accuracy normalized by the imbalance of the classes in the data\n",
    "    - ROC curves - calculates sensitivity/specificity ratio.\n",
    "- Resampling the dataset\n",
    "    - Essentially this is a method that will process the data to have an approximate 50-50 ratio.\n",
    "    - One way to achieve this is by OVER-sampling, which is adding copies of the under-represented class (better when you have little data)\n",
    "    - Another is UNDER-sampling, which deletes instances from the over-represented class (better when you have lot's of data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "555427ea-a862-c64f-9d88-ddbb4f0366a3"
   },
   "source": [
    "# <span style=\"color:#0b486b\">Approach</span>\n",
    "\n",
    "1. We are not going to perform feature engineering in first instance. The dataset has been downgraded in order to contain 30 features (28 anonamised + time + amount). \n",
    "2. We will compare what happens when using resampling and when not using it. We will test this approach using a simple logistic regression classifier.\n",
    "3. We will evaluate the models by using some of the performance metrics mentioned above.\n",
    "4. We will repeat the best resampling/not resampling method, by tuning the parameters in the logistic regression classifier.\n",
    "5. We will finally perform classifications model using other classification algorithms for comparison. We will leave it for your homework."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "fb559c9d-f4fe-5c63-7bdb-14cd3529f660"
   },
   "source": [
    "# <span style=\"color:#0b486b\">Setting our input and target variables + resampling</span>\n",
    "\n",
    "#### 1. Normalising the amount column. The amount column is not in line with the anonimised features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-03T15:54:12.702181Z",
     "start_time": "2018-11-03T15:54:12.475453Z"
    },
    "_cell_guid": "3fd30a6f-c0ad-5ece-943c-651cdf14d0d6",
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>V1</th>\n",
       "      <th>V2</th>\n",
       "      <th>V3</th>\n",
       "      <th>V4</th>\n",
       "      <th>V5</th>\n",
       "      <th>V6</th>\n",
       "      <th>V7</th>\n",
       "      <th>V8</th>\n",
       "      <th>V9</th>\n",
       "      <th>V10</th>\n",
       "      <th>...</th>\n",
       "      <th>V21</th>\n",
       "      <th>V22</th>\n",
       "      <th>V23</th>\n",
       "      <th>V24</th>\n",
       "      <th>V25</th>\n",
       "      <th>V26</th>\n",
       "      <th>V27</th>\n",
       "      <th>V28</th>\n",
       "      <th>Class</th>\n",
       "      <th>normAmount</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-1.359807</td>\n",
       "      <td>-0.072781</td>\n",
       "      <td>2.536347</td>\n",
       "      <td>1.378155</td>\n",
       "      <td>-0.338321</td>\n",
       "      <td>0.462388</td>\n",
       "      <td>0.239599</td>\n",
       "      <td>0.098698</td>\n",
       "      <td>0.363787</td>\n",
       "      <td>0.090794</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.018307</td>\n",
       "      <td>0.277838</td>\n",
       "      <td>-0.110474</td>\n",
       "      <td>0.066928</td>\n",
       "      <td>0.128539</td>\n",
       "      <td>-0.189115</td>\n",
       "      <td>0.133558</td>\n",
       "      <td>-0.021053</td>\n",
       "      <td>0</td>\n",
       "      <td>0.244964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.191857</td>\n",
       "      <td>0.266151</td>\n",
       "      <td>0.166480</td>\n",
       "      <td>0.448154</td>\n",
       "      <td>0.060018</td>\n",
       "      <td>-0.082361</td>\n",
       "      <td>-0.078803</td>\n",
       "      <td>0.085102</td>\n",
       "      <td>-0.255425</td>\n",
       "      <td>-0.166974</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.225775</td>\n",
       "      <td>-0.638672</td>\n",
       "      <td>0.101288</td>\n",
       "      <td>-0.339846</td>\n",
       "      <td>0.167170</td>\n",
       "      <td>0.125895</td>\n",
       "      <td>-0.008983</td>\n",
       "      <td>0.014724</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.342475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1.358354</td>\n",
       "      <td>-1.340163</td>\n",
       "      <td>1.773209</td>\n",
       "      <td>0.379780</td>\n",
       "      <td>-0.503198</td>\n",
       "      <td>1.800499</td>\n",
       "      <td>0.791461</td>\n",
       "      <td>0.247676</td>\n",
       "      <td>-1.514654</td>\n",
       "      <td>0.207643</td>\n",
       "      <td>...</td>\n",
       "      <td>0.247998</td>\n",
       "      <td>0.771679</td>\n",
       "      <td>0.909412</td>\n",
       "      <td>-0.689281</td>\n",
       "      <td>-0.327642</td>\n",
       "      <td>-0.139097</td>\n",
       "      <td>-0.055353</td>\n",
       "      <td>-0.059752</td>\n",
       "      <td>0</td>\n",
       "      <td>1.160686</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.966272</td>\n",
       "      <td>-0.185226</td>\n",
       "      <td>1.792993</td>\n",
       "      <td>-0.863291</td>\n",
       "      <td>-0.010309</td>\n",
       "      <td>1.247203</td>\n",
       "      <td>0.237609</td>\n",
       "      <td>0.377436</td>\n",
       "      <td>-1.387024</td>\n",
       "      <td>-0.054952</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.108300</td>\n",
       "      <td>0.005274</td>\n",
       "      <td>-0.190321</td>\n",
       "      <td>-1.175575</td>\n",
       "      <td>0.647376</td>\n",
       "      <td>-0.221929</td>\n",
       "      <td>0.062723</td>\n",
       "      <td>0.061458</td>\n",
       "      <td>0</td>\n",
       "      <td>0.140534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-1.158233</td>\n",
       "      <td>0.877737</td>\n",
       "      <td>1.548718</td>\n",
       "      <td>0.403034</td>\n",
       "      <td>-0.407193</td>\n",
       "      <td>0.095921</td>\n",
       "      <td>0.592941</td>\n",
       "      <td>-0.270533</td>\n",
       "      <td>0.817739</td>\n",
       "      <td>0.753074</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.009431</td>\n",
       "      <td>0.798278</td>\n",
       "      <td>-0.137458</td>\n",
       "      <td>0.141267</td>\n",
       "      <td>-0.206010</td>\n",
       "      <td>0.502292</td>\n",
       "      <td>0.219422</td>\n",
       "      <td>0.215153</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.073403</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 30 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         V1        V2        V3        V4        V5        V6        V7  \\\n",
       "0 -1.359807 -0.072781  2.536347  1.378155 -0.338321  0.462388  0.239599   \n",
       "1  1.191857  0.266151  0.166480  0.448154  0.060018 -0.082361 -0.078803   \n",
       "2 -1.358354 -1.340163  1.773209  0.379780 -0.503198  1.800499  0.791461   \n",
       "3 -0.966272 -0.185226  1.792993 -0.863291 -0.010309  1.247203  0.237609   \n",
       "4 -1.158233  0.877737  1.548718  0.403034 -0.407193  0.095921  0.592941   \n",
       "\n",
       "         V8        V9       V10     ...           V21       V22       V23  \\\n",
       "0  0.098698  0.363787  0.090794     ...     -0.018307  0.277838 -0.110474   \n",
       "1  0.085102 -0.255425 -0.166974     ...     -0.225775 -0.638672  0.101288   \n",
       "2  0.247676 -1.514654  0.207643     ...      0.247998  0.771679  0.909412   \n",
       "3  0.377436 -1.387024 -0.054952     ...     -0.108300  0.005274 -0.190321   \n",
       "4 -0.270533  0.817739  0.753074     ...     -0.009431  0.798278 -0.137458   \n",
       "\n",
       "        V24       V25       V26       V27       V28  Class  normAmount  \n",
       "0  0.066928  0.128539 -0.189115  0.133558 -0.021053      0    0.244964  \n",
       "1 -0.339846  0.167170  0.125895 -0.008983  0.014724      0   -0.342475  \n",
       "2 -0.689281 -0.327642 -0.139097 -0.055353 -0.059752      0    1.160686  \n",
       "3 -1.175575  0.647376 -0.221929  0.062723  0.061458      0    0.140534  \n",
       "4  0.141267 -0.206010  0.502292  0.219422  0.215153      0   -0.073403  \n",
       "\n",
       "[5 rows x 30 columns]"
      ]
     },
     "execution_count": 220,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "data['normAmount'] = StandardScaler().fit_transform(data['Amount'].values.reshape(-1, 1))\n",
    "data = data.drop(['Time','Amount'],axis=1)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "cfffc4c5-b621-250f-3b6b-6118cef52b9d"
   },
   "source": [
    "#### 2. Resampling.\n",
    "\n",
    "- As we mentioned earlier, there are several ways to resample skewed data. Apart from under and over sampling, there is a very popular approach called SMOTE (Synthetic Minority Over-Sampling Technique), which is a combination of oversampling and undersampling, but the oversampling approach is not by replicating minority class but constructing new minority class data instance via an algorithm.\n",
    "\n",
    "- In this practical, we will use traditional UNDER-sampling.\n",
    "\n",
    "- The way we will under sample the dataset by creating a 50/50 ratio. This will be done by randomly selecting \"x\" amount of sample from the majority class, being \"x\" the total number of records with the minority class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-03T15:54:06.954000Z",
     "start_time": "2018-11-03T15:54:06.927158Z"
    },
    "_cell_guid": "c1d874fa-5ea5-edbb-726c-ae98c84e6120"
   },
   "outputs": [],
   "source": [
    "X = data.iloc[:, data.columns != 'Class']\n",
    "y = data.iloc[:, data.columns == 'Class']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-03T15:54:27.473931Z",
     "start_time": "2018-11-03T15:54:27.402424Z"
    },
    "_cell_guid": "2af7c203-44ed-66b6-6141-ac0d0637fcc6"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Percentage of normal transactions:  0.5\n",
      "Percentage of fraud transactions:  0.5\n",
      "Total number of transactions in resampled data:  984\n"
     ]
    }
   ],
   "source": [
    "# Number of data points in the minority class\n",
    "number_records_fraud = len(data[data.Class == 1])\n",
    "fraud_indices = np.array(data[data.Class == 1].index)\n",
    "\n",
    "# Picking the indices of the normal classes\n",
    "normal_indices = data[data.Class == 0].index\n",
    "\n",
    "# Out of the indices we picked, randomly select \"x\" number (number_records_fraud)\n",
    "random_normal_indices = np.random.choice(normal_indices, number_records_fraud, replace = False)\n",
    "random_normal_indices = np.array(random_normal_indices)\n",
    "\n",
    "# Appending the 2 indices\n",
    "under_sample_indices = np.concatenate([fraud_indices,random_normal_indices])\n",
    "\n",
    "# Under sample dataset\n",
    "under_sample_data = data.iloc[under_sample_indices,:]\n",
    "\n",
    "X_undersample = under_sample_data.iloc[:, under_sample_data.columns != 'Class']\n",
    "y_undersample = under_sample_data.iloc[:, under_sample_data.columns == 'Class']\n",
    "\n",
    "# Showing ratio\n",
    "print(\"Percentage of normal transactions: \", len(under_sample_data[under_sample_data.Class == 0])/float(len(under_sample_data)))\n",
    "print(\"Percentage of fraud transactions: \", len(under_sample_data[under_sample_data.Class == 1])/float(len(under_sample_data)))\n",
    "print(\"Total number of transactions in resampled data: \", len(under_sample_data))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "6b74ba73-82a8-3585-b790-44fe486ff19d"
   },
   "source": [
    "# <span style=\"color:#0b486b\">Splitting data into train and test set. Cross validation will be used when calculating accuracies</span>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-03T15:55:48.985351Z",
     "start_time": "2018-11-03T15:55:48.794082Z"
    },
    "_cell_guid": "4a725b16-c14a-2be8-8240-617b7b2ed8cd"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number transactions whole train dataset:  199364\n",
      "Number transactions whole test dataset:  85443\n",
      "Total number of whole transactions:  284807\n",
      "\n",
      "Number transactions undersample train dataset:  688\n",
      "Number transactions undersample test dataset:  296\n",
      "Total number of undersample transactions:  984\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# split whole dataset into train set and test set\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size = 0.3, random_state = 0)\n",
    "\n",
    "print(\"Number transactions whole train dataset: \", len(X_train))\n",
    "print(\"Number transactions whole test dataset: \", len(X_test))\n",
    "print(\"Total number of whole transactions: \", len(X_train)+len(X_test))\n",
    "\n",
    "\n",
    "# Undersampled dataset\n",
    "X_train_undersample, X_test_undersample, y_train_undersample, y_test_undersample = train_test_split(X_undersample\n",
    "                                                                                                   ,y_undersample\n",
    "                                                                                                   ,test_size = 0.3\n",
    "                                                                                                   ,random_state = 0)\n",
    "print(\"\")\n",
    "print(\"Number transactions undersample train dataset: \", len(X_train_undersample))\n",
    "print(\"Number transactions undersample test dataset: \", len(X_test_undersample))\n",
    "print(\"Total number of undersample transactions: \", len(X_train_undersample)+len(X_test_undersample))\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "6927cc69-57e6-4f34-4680-0b0016d414a0"
   },
   "source": [
    "# <span style=\"color:#0b486b\">Logistic regression classifier - Undersampled data</span>\n",
    "\n",
    "We are very interested in the recall score, because that is the metric that will help us try to capture the most fraudulent transactions. If you think how Accuracy, Precision and Recall work for a confusion matrix, recall would be the most interesting:\n",
    "\n",
    "- Accuracy = (TP+TN)/total\n",
    "- Precision = TP/(TP+FP)\n",
    "- Recall = TP/(TP+FN)\n",
    "\n",
    "As we know, due to the imbalacing of the data, many observations could be predicted as False Negatives, being that we predict a normal transaction, but it is in fact a fraudulent one. Recall captures this.\n",
    "- Obviously, trying to increase recall, tends to come with a decrease of precision. However, in our case, if we predict that a transaction is fraudulent and turns out not to be, is not a massive problem compared to the opposite. \n",
    "- We could even apply a cost function when having FN and FP with different weights for each type of error, but let's leave that aside for now."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:35:02.476042Z",
     "start_time": "2018-11-04T00:35:02.469768Z"
    },
    "_cell_guid": "9c7ec815-da54-993b-ef8d-b41b767cfacf"
   },
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import KFold, cross_val_score, GridSearchCV\n",
    "from sklearn.metrics import confusion_matrix,precision_recall_curve,auc,roc_auc_score,roc_curve,recall_score,classification_report "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "88765ef8-cb56-860a-d249-9691d90afcb2"
   },
   "source": [
    "Very ad-hoc function to print K_fold_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 225,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:39:59.403155Z",
     "start_time": "2018-11-04T00:39:58.965181Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Best parameters set found on undersample train set:\n",
      "\n",
      "{'C': 0.01}\n",
      "Grid scores on undersample train set:\n",
      "0.925 (+/-0.046) for {'C': 0.01}\n",
      "0.910 (+/-0.074) for {'C': 0.1}\n",
      "0.916 (+/-0.067) for {'C': 1}\n",
      "0.919 (+/-0.065) for {'C': 10}\n",
      "0.919 (+/-0.065) for {'C': 100}\n",
      "Detailed classification report:\n",
      "The model is trained on the undersample train set.\n",
      "The scores are computed on the undersample test set.\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.93      0.95      0.94       149\n",
      "           1       0.95      0.93      0.94       147\n",
      "\n",
      "   micro avg       0.94      0.94      0.94       296\n",
      "   macro avg       0.94      0.94      0.94       296\n",
      "weighted avg       0.94      0.94      0.94       296\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "c_param_range = [0.01,0.1,1,10,100]\n",
    "\n",
    "#print(\"# Tuning hyper-parameters for %s\" % score)\n",
    "print()\n",
    "\n",
    "clf = GridSearchCV(LogisticRegression(solver='liblinear'), {\"C\": c_param_range}, cv=5, scoring='recall')\n",
    "clf.fit(X_train_undersample,y_train_undersample.values.ravel())\n",
    "\n",
    "print (\"Best parameters set found on undersample train set:\")\n",
    "print()\n",
    "print (clf.best_params_)\n",
    "\n",
    "print (\"Grid scores on undersample train set:\")\n",
    "means = clf.cv_results_['mean_test_score']\n",
    "stds = clf.cv_results_['std_test_score']\n",
    "for mean, std, params in zip(means, stds, clf.cv_results_['params']):\n",
    "    print(\"%0.3f (+/-%0.03f) for %r\"\n",
    "          % (mean, std * 2, params))\n",
    "\n",
    "print (\"Detailed classification report:\")\n",
    "print (\"The model is trained on the undersample train set.\")\n",
    "print (\"The scores are computed on the undersample test set.\")\n",
    "y_true_undersample, y_pred_undersample = y_test_undersample, clf.predict(X_test_undersample)\n",
    "print(classification_report(y_true_undersample, y_pred_undersample))\n",
    "print()\n",
    "#Please note we did not use test set to select the best params."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:42:39.453151Z",
     "start_time": "2018-11-04T00:42:39.440375Z"
    },
    "_cell_guid": "069bc837-cfd1-006e-c589-7085d5d29a8e"
   },
   "outputs": [],
   "source": [
    "# Define a function to find the best hyper-parameter optimizing for recall\n",
    "def print_gridsearch_scores(x_train_data,y_train_data):\n",
    "    c_param_range = [0.01,0.1,1,10,100]\n",
    "\n",
    "    clf = GridSearchCV(LogisticRegression(solver='liblinear'), {\"C\": c_param_range}, cv=5, scoring='recall')\n",
    "    clf.fit(x_train_data,y_train_data.values.ravel())\n",
    "\n",
    "    print (\"Best parameters set found on development set:\")\n",
    "    print()\n",
    "    print (clf.best_params_)\n",
    "\n",
    "    print (\"Grid scores on development set:\")\n",
    "    means = clf.cv_results_['mean_test_score']\n",
    "    stds = clf.cv_results_['std_test_score']\n",
    "    for mean, std, params in zip(means, stds, clf.cv_results_['params']):\n",
    "        print (\"%0.3f (+/-%0.03f) for %r\" % (mean, std * 2, params))\n",
    "        \n",
    "    return clf.best_params_[\"C\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 227,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:42:40.091983Z",
     "start_time": "2018-11-04T00:42:39.798627Z"
    },
    "_cell_guid": "983c1c75-8092-9a8e-40ca-754fde9e2301"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best parameters set found on development set:\n",
      "\n",
      "{'C': 0.01}\n",
      "Grid scores on development set:\n",
      "0.925 (+/-0.046) for {'C': 0.01}\n",
      "0.910 (+/-0.074) for {'C': 0.1}\n",
      "0.916 (+/-0.067) for {'C': 1}\n",
      "0.919 (+/-0.065) for {'C': 10}\n",
      "0.919 (+/-0.065) for {'C': 100}\n"
     ]
    }
   ],
   "source": [
    "best_c_undersample = print_gridsearch_scores(X_train_undersample,y_train_undersample)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "bdb1ff38-9d27-ae15-58df-9be4e4f76550"
   },
   "source": [
    "Create a function to plot a fancy confusion matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:42:40.727673Z",
     "start_time": "2018-11-04T00:42:40.707188Z"
    },
    "_cell_guid": "f5b049b3-4f9a-f5bb-db3d-6c48e9b1e1a5"
   },
   "outputs": [],
   "source": [
    "import itertools\n",
    "\n",
    "def plot_confusion_matrix(cm, classes,\n",
    "                          normalize=False,\n",
    "                          title='Confusion matrix',\n",
    "                          cmap=plt.cm.Blues):\n",
    "    \"\"\"\n",
    "    This function prints and plots the confusion matrix.\n",
    "    Normalization can be applied by setting `normalize=True`.\n",
    "    \"\"\"\n",
    "    plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
    "    plt.title(title)\n",
    "    plt.colorbar()\n",
    "    tick_marks = np.arange(len(classes))\n",
    "    plt.xticks(tick_marks, classes, rotation=0)\n",
    "    plt.yticks(tick_marks, classes)\n",
    "\n",
    "    if normalize:\n",
    "        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
    "        #print(\"Normalized confusion matrix\")\n",
    "    else:\n",
    "        1#print('Confusion matrix, without normalization')\n",
    "\n",
    "    #print(cm)\n",
    "\n",
    "    thresh = cm.max() / 2.\n",
    "    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
    "        plt.text(j, i, cm[i, j],\n",
    "                 horizontalalignment=\"center\",\n",
    "                 color=\"white\" if cm[i, j] > thresh else \"black\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.ylabel('True label')\n",
    "    plt.xlabel('Predicted label')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "e40b554a-5b88-2828-f655-d54560ad7480"
   },
   "source": [
    "### Predictions on test set and plotting confusion matrix\n",
    "\n",
    "We have been talking about using the recall metric as our proxy of how effective our predictive model is. Even though recall is still the recall we want to calculate, just bear mind in mind that the undersampled data hasn't got a skewness towards a certain class, which doesn't make recall metric as critical. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:42:41.489547Z",
     "start_time": "2018-11-04T00:42:41.241496Z"
    },
    "_cell_guid": "5c8e4c0e-8cfd-7422-04a8-1b47b8531267",
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall metric in the testing dataset:  0.9319727891156463\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Use this best C_parameter to build the final model with the undersample training dataset and \n",
    "#predict the classes in the undersample test dataset\n",
    "lr = LogisticRegression(solver='liblinear', C = best_c_undersample, penalty = 'l1')\n",
    "lr.fit(X_train_undersample,y_train_undersample.values.ravel())\n",
    "y_pred_undersample = lr.predict(X_test_undersample.values)\n",
    "\n",
    "# Compute confusion matrix\n",
    "cnf_matrix = confusion_matrix(y_test_undersample,y_pred_undersample)\n",
    "np.set_printoptions(precision=2)\n",
    "\n",
    "print(\"Recall metric in the testing dataset: \", cnf_matrix[1,1]/(cnf_matrix[1,0]+cnf_matrix[1,1]))\n",
    "\n",
    "# Plot non-normalized confusion matrix\n",
    "class_names = [0,1]\n",
    "plt.figure()\n",
    "plot_confusion_matrix(cnf_matrix\n",
    "                      , classes=class_names\n",
    "                      , title='Confusion matrix')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "3aee694e-c838-434a-0cb6-dafaa3a0b224"
   },
   "source": [
    "So, the model is offering an 93% recall accuracy on the generalised unseen data (test set). Not a bad percentage to be the first try. However, remember this is a 93% recall accuracy measure on the undersampled test set.\n",
    "\n",
    "Being happy with this result, let's apply the model we fitted and test it on the whole data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:42:43.940100Z",
     "start_time": "2018-11-04T00:42:43.645024Z"
    },
    "_cell_guid": "2fac80a6-cc45-49e8-3fd6-2322e2461955"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall metric in the testing dataset:  0.5510204081632653\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Use this C_parameter to build the final model with the whole training dataset and \n",
    "#predict the classes in the whole test dataset\n",
    "lr = LogisticRegression(solver='liblinear', C = best_c_undersample, penalty = 'l1')\n",
    "lr.fit(X_train,y_train.values.ravel())\n",
    "y_pred = lr.predict(X_test.values)\n",
    "\n",
    "# Compute confusion matrix\n",
    "cnf_matrix = confusion_matrix(y_test,y_pred)\n",
    "np.set_printoptions(precision=2)\n",
    "\n",
    "print(\"Recall metric in the testing dataset: \", cnf_matrix[1,1]/(cnf_matrix[1,0]+cnf_matrix[1,1]))\n",
    "\n",
    "# Plot non-normalized confusion matrix\n",
    "class_names = [0,1]\n",
    "plt.figure()\n",
    "plot_confusion_matrix(cnf_matrix\n",
    "                      , classes=class_names\n",
    "                      , title='Confusion matrix')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "e90966bc-2fb9-8442-4705-340d15a79b66"
   },
   "source": [
    "Not a  decent recall accuracy at all when applying it to a much larger and skewed dataset! \n",
    "\n",
    "Seemed the initial approach is not working. We need to find the best hyperparameters for the whole skewed dataset. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "29bf4990-1b01-52fc-6c37-d4414b0aafa7"
   },
   "source": [
    "### Plotting ROC curve and Precision-Recall curve.\n",
    "\n",
    "- We find precision-recall curve much more convenient in this case as our problems relies on the \"positive\" class being more interesting than the negative class, but as we have calculated the recall precision, we are not going to plot the precision recall curves yet.\n",
    "\n",
    "- AUC and ROC curve are also interesting to check if the model is also predicting as a whole correctly and not making many errors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:42:49.509973Z",
     "start_time": "2018-11-04T00:42:49.237919Z"
    },
    "_cell_guid": "4a0d3339-cb16-5899-0b0e-f86636284a63",
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ROC CURVE\n",
    "lr = LogisticRegression(solver='liblinear', C = best_c_undersample, penalty = 'l1')\n",
    "y_pred_undersample_score = lr.fit(X_train_undersample,y_train_undersample.values.ravel()).decision_function(X_test_undersample.values)\n",
    "\n",
    "fpr, tpr, thresholds = roc_curve(y_test_undersample.values.ravel(),y_pred_undersample_score)\n",
    "roc_auc = auc(fpr,tpr)\n",
    "\n",
    "# Plot ROC\n",
    "plt.title('Receiver Operating Characteristic')\n",
    "plt.plot(fpr, tpr, 'b',label='AUC = %0.2f'% roc_auc)\n",
    "plt.legend(loc='lower right')\n",
    "plt.plot([0,1],[0,1],'r--')\n",
    "plt.xlim([-0.1,1.0])\n",
    "plt.ylim([-0.1,1.01])\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "1f1e40a4-bca8-87ad-f368-d0b50e7d6158"
   },
   "source": [
    "An additional comment that would be interesting to do is to initialise multiple undersampled datasets and repeat the process in loop. Remember that, to create an undersample data, we randomly got records from the majority class. Even though this is a valid technique, is doesn't represent the real population, so it would be interesting to repeat the process with different undersample configurations and check if the previous chosen parameters are still the most effective. In the end, the idea is to use a wider random representation of the whole dataset and rely on the averaged best parameters."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "2e0e6bfc-37ac-2d2e-61af-7118619fdf27"
   },
   "source": [
    "# <span style=\"color:#0b486b\">Logistic regression classifier - Skewed data</span>\n",
    "\n",
    "Having tested our previous approach, we find really interesting to test the same process on the skewed data. Our intuition is that skewness will introduce issues difficult to capture, and therefore, provide a less effective algorithm.\n",
    "- To be fair, taking into account the fact that the train and test datasets are substantially bigger than the undersampled ones, we believe a K-fold cross validation is necessary. let's take the same approach as before. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:43:31.501891Z",
     "start_time": "2018-11-04T00:42:50.753355Z"
    },
    "_cell_guid": "2aaf245f-43cd-d543-b857-562fb696fc4e"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best parameters set found on development set:\n",
      "\n",
      "{'C': 10}\n",
      "Grid scores on development set:\n",
      "0.591 (+/-0.121) for {'C': 0.01}\n",
      "0.594 (+/-0.076) for {'C': 0.1}\n",
      "0.612 (+/-0.106) for {'C': 1}\n",
      "0.620 (+/-0.122) for {'C': 10}\n",
      "0.620 (+/-0.122) for {'C': 100}\n"
     ]
    }
   ],
   "source": [
    "best_c = print_gridsearch_scores(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:43:40.964169Z",
     "start_time": "2018-11-04T00:43:35.816138Z"
    },
    "_cell_guid": "634c1907-a5c5-888c-c2e9-da73f81ee445"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall metric in the testing dataset:  0.6190476190476191\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Use this C_parameter to build the final model with the whole training dataset and \n",
    "#predict the classes in the test dataset\n",
    "lr = LogisticRegression(solver='liblinear', C = best_c, penalty = 'l1')\n",
    "lr.fit(X_train,y_train.values.ravel())\n",
    "y_pred = lr.predict(X_test.values)\n",
    "\n",
    "# Compute confusion matrix\n",
    "cnf_matrix = confusion_matrix(y_test,y_pred)\n",
    "np.set_printoptions(precision=2)\n",
    "\n",
    "print(\"Recall metric in the testing dataset: \", cnf_matrix[1,1]/(cnf_matrix[1,0]+cnf_matrix[1,1]))\n",
    "\n",
    "# Plot non-normalized confusion matrix\n",
    "class_names = [0,1]\n",
    "plt.figure()\n",
    "plot_confusion_matrix(cnf_matrix\n",
    "                      , classes=class_names\n",
    "                      , title='Confusion matrix')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "f409ba42-8534-e960-0869-00b1e4e73d65"
   },
   "source": [
    "# <span style=\"color:#0b486b\">Before continuing... changing classification threshold</span>\n",
    "\n",
    "We have seen that by undersampling the data, our algorithm does a much better job at detecting fraud. We wanted also to show how can we tweak our final classification by changing the thresold.\n",
    "- Initially, you build the classification model and then you predict unseen data using it.\n",
    "- We previously used the \"predict()\" method to decided whether a record should belong to \"1\" or \"0\". \n",
    "- There is another method \"predict_proba()\".\n",
    "    - This method returns the probabilities for each class. The idea is that by changing the threshold to assign a record to class 1, we can control precision and recall.\n",
    "    \n",
    "Let's check this using the undersampled data (best C_param)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:44:52.939827Z",
     "start_time": "2018-11-04T00:44:50.815289Z"
    },
    "_cell_guid": "a1275e7d-48fc-e0bd-c629-6ddf698b47b5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall metric in the undersample testing dataset for threshold 0.1: 1.0\n",
      "Recall metric in the undersample testing dataset for threshold 0.2: 1.0\n",
      "Recall metric in the undersample testing dataset for threshold 0.3: 1.0\n",
      "Recall metric in the undersample testing dataset for threshold 0.4: 0.9727891156462585\n",
      "Recall metric in the undersample testing dataset for threshold 0.5: 0.9319727891156463\n",
      "Recall metric in the undersample testing dataset for threshold 0.6: 0.891156462585034\n",
      "Recall metric in the undersample testing dataset for threshold 0.7: 0.8367346938775511\n",
      "Recall metric in the undersample testing dataset for threshold 0.8: 0.782312925170068\n",
      "Recall metric in the undersample testing dataset for threshold 0.9: 0.5986394557823129\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 18 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "lr = LogisticRegression(solver='liblinear', C = best_c_undersample, penalty = 'l1')\n",
    "lr.fit(X_train_undersample,y_train_undersample.values.ravel())\n",
    "y_pred_undersample_proba = lr.predict_proba(X_test_undersample.values)\n",
    "\n",
    "thresholds = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]\n",
    "\n",
    "plt.figure(figsize=(10,10))\n",
    "\n",
    "j = 1\n",
    "for i in thresholds:\n",
    "    y_test_predictions_high_recall = y_pred_undersample_proba[:,1] > i\n",
    "    \n",
    "    plt.subplot(3,3,j)\n",
    "    j += 1\n",
    "    \n",
    "    # Compute confusion matrix\n",
    "    cnf_matrix = confusion_matrix(y_test_undersample,y_test_predictions_high_recall)\n",
    "    np.set_printoptions(precision=2)\n",
    "\n",
    "    print (\"Recall metric in the undersample testing dataset for threshold {}: {}\".format(i, cnf_matrix[1,1]/(cnf_matrix[1,0]+cnf_matrix[1,1])))\n",
    "\n",
    "    # Plot non-normalized confusion matrix\n",
    "    class_names = [0,1]\n",
    "    plot_confusion_matrix(cnf_matrix\n",
    "                          , classes=class_names\n",
    "                          , title='Threshold >= %s'%i) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "cdf08467-7947-a71b-3d00-7b060905bbdb"
   },
   "source": [
    "The pattern is very clear: the more you lower the required probability to put a certain in the class \"1\" category, more records will be put in that bucket.\n",
    "\n",
    "This implies an increase in recall (we want all the \"1\"s), but at the same time, a decrease in precision (we misclassify many of the other class).\n",
    "\n",
    "Therefore, even though recall is our goal metric (do not miss a fraud transaction), we also want to keep the model being accurate as a whole.\n",
    "\n",
    "- There is an option we think could be quite interesting to tackle this. We could assing cost to misclassifications, but being interested in classifying \"1s\" correctly, the cost for misclassifying \"1s\" should be bigger than \"0\" misclassifications. After that, the algorithm would select the threshold which minimises the total cost. A drawback we see is that we have to manually select the weight of each cost... therefore, we will leave this know as a thought.\n",
    "- Going back to the threshold changing, there is an option which is the Precisio-Recall curve. By visually seeing the performance of the model depending on the threshold we choose, we can investigate a sweet spot where recall is high enough whilst keeping a high precision value.\n",
    "\n",
    "Investigate Precision-Recall curve and area under this curve."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-11-04T00:45:11.062019Z",
     "start_time": "2018-11-04T00:45:10.675087Z"
    },
    "_cell_guid": "c73b727b-6743-add2-a45f-a83ce5b8b375"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from itertools import cycle\n",
    "\n",
    "lr = LogisticRegression(solver='liblinear', C = best_c_undersample, penalty = 'l1')\n",
    "lr.fit(X_train_undersample,y_train_undersample.values.ravel())\n",
    "y_pred_undersample_proba = lr.predict_proba(X_test_undersample.values)\n",
    "\n",
    "thresholds = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]\n",
    "colors = cycle(['navy', 'turquoise', 'darkorange', 'cornflowerblue', 'teal', 'red', 'yellow', 'green', 'blue','black'])\n",
    "\n",
    "plt.figure(figsize=(5,5))\n",
    "\n",
    "j = 1\n",
    "for i,color in zip(thresholds,colors):\n",
    "    y_test_predictions_prob = y_pred_undersample_proba[:,1] > i\n",
    "    \n",
    "    precision, recall, thresholds = precision_recall_curve(y_test_undersample,y_test_predictions_prob)\n",
    "    \n",
    "    # Plot Precision-Recall curve\n",
    "    plt.plot(recall, precision, color=color,\n",
    "                 label='Threshold: %s'%i)\n",
    "    plt.xlabel('Recall')\n",
    "    plt.ylabel('Precision')\n",
    "    plt.ylim([0.0, 1.05])\n",
    "    plt.xlim([0.0, 1.0])\n",
    "    plt.title('Precision-Recall example')\n",
    "    plt.legend(loc=\"lower left\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We also wanted to show how we can tweak our final classification by changing the thresold for the whole skewed dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall metric in the whole testing dataset for threshold 0.1: 0.7755102040816326\n",
      "Recall metric in the whole testing dataset for threshold 0.2: 0.7414965986394558\n",
      "Recall metric in the whole testing dataset for threshold 0.3: 0.6870748299319728\n",
      "Recall metric in the whole testing dataset for threshold 0.4: 0.6462585034013606\n",
      "Recall metric in the whole testing dataset for threshold 0.5: 0.6190476190476191\n",
      "Recall metric in the whole testing dataset for threshold 0.6: 0.5918367346938775\n",
      "Recall metric in the whole testing dataset for threshold 0.7: 0.5578231292517006\n",
      "Recall metric in the whole testing dataset for threshold 0.8: 0.5238095238095238\n",
      "Recall metric in the whole testing dataset for threshold 0.9: 0.4897959183673469\n"
     ]
    },
    {
     "data": {
      "image/png": "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QL7MHn7E8E2Phwwdxs033djKvWoeZTZbyp3XmOXL69777FOZzrRQ7HmNdoC86uXXuHjaXJ647QLeemcDc+c9xtz5j/HZkYP54Zmf4pzTRnLXwsc595KZbHh342brnjL6E8y+95Gi7dSq31xxGdf+cRoDBw3mpz//f3Ts2LHplSqolNl196VAvmNeh+Wp68CZBdqZDEzOU74Y6LeV3cys1sjsGZ/9JH/750P8e83rrf75Km3alMl8+oTPVrobTVJms6G1vmObaksqK+a8lvUUCzMbYWaPW3JR5mInW5dch53acczBH2WfYyaxx/DvsUO7tow56mP84NKZ9D/uAg446ed03HkHvvn5wzdb76DBvRk/+uOc++sZRdupRaedfgaPPP4kC5Ys5YNdu3L2t6v//M1mzLCteZXMK5Q/s1133Znjj9iPK6b/s7U/WsVd9JMLqW/ThjGfO7HSXWmSMpte7N+xTbUllRdzXss2QDazeuBykos59wHGmlmfcr1fY4cO3ZtnVr3CmnX/YePG97nljgcY1r/Xpj1HG97dyLQZ8xnct+emdfr13o0rf/A5Tvj6Vax97c2i7dSiLl26UF9fT11dHadOOI3FixdWuktNKtX5UbGrdF6h/Jntv1d39uixK8tmTuKxv53H9tttw8MzJrXmR6yIa6ZNZdbfbmXKtD9l4otKmU2n0pltje/YYm1JdYg5r+XcgzwEWOHuT7n7BmA6yYWdW8Xz/17LkI/2ot122wBwyJC9ePzpF/lgp/ab6hx7yL488mQyibHHBzsy/RenMeH701jx3EtNtlOLVq9evenxjFtupk/f6j6yaJacc5pmkcrmFcqf2dvvWUavI77L3kdPYu+jJ7H+7XfpN+q8VvyEre/vs2/n//3iIm68eSbbb799pbvTJGW2WaL/ji3UllSH2PNaznOQ812seWgZ328zix5+lpv/cT/zrv0OG997nwceW8nVN93LjMvOoFPHnTCDBx9fyVkXTgfgnIkj2aXDDlx8TnKO3sb33ueAE39WsB2AL439JN8YfzhdPtCeRdd/l9vvWcaXzr+2tT5iWY07aSx3//Mu1qxZw4d7duf7PziPf/3zLh58YClmxod69uTSK35b6W42IbuHdiqgonmF1slszPJl9uc/+wnvvPMOx4xILq81ZOgwLr3iNxXuaTHKbDNE/x37hwvH520rBvny2nGXXfjG185izcsvc/yoo9m3/wD+Omt2pbtaRNx5teQ85zI0bHYCcKS7fyE8PxkY4u5nNao3keTe2LDNjoO26zu+cVM1b92iyyrdhaq0/9DBLFmyuGA6d+y+t+/7latStTXvO59c0sRFzKOmvJaO8ppfU3kFZbY50mRWeW2a8lpYu22saMZiz2s59yAXuojzZtz9KuAqgLrtO+suRFJSMW/dlpjyKlVBmU2tycwqr1JuMee1nOcgLwJ6m1mvcE27MSQXdhZpHSW8iHkNUF6l8pTZ5lBmpbIiz2vZ9iC7+0Yz+zLJXU3qgcnuvqxc7yfSWBkuYh4t5VWqgTKbnjIrlRZ7Xst6oxB3n0VytxORisjq7NlKUF6lGiiz6SmzUmkx5zXaO+mJQNxbtyIxUmZFsiPmvGqALPHK8LlPIjVJmRXJjsjzqgGyRMsiv0ajSGyUWZHsiD2vGiBL1CLOrkiUlFmR7Ig5rxogS9TqI55AIBIjZVYkO2LOqwbIEq3k+ovxhlckNsqsSHbEnteCA2Qza19sRXd/vfTdESmtiDdut6DMSgxqJbPKq8Qg5rwW24O8DHCSa0E3aHjuwO5l7JdIScS8dZuHMiuZV0OZVV4l82LOa8FbTbt7D3ffPfzs0ei5giuZUMrbYJrZM2b2kJktNbPFoWwXM5tjZsvDz46h3MzsEjNbYWYPmtnAnHbGh/rLzWx8Tvmg0P6KsG6z/vIosxKDWsms8ioxiDmvBQfIjTo9xsy+Gx53N7NB6T6uSOUY4TI0Kf5rhkPcfYC7Dw7PzwbmuntvYG54DjAS6B2WicCVkIQdmAQMBYYAkxoCH+pMzFlvRAs/ujIrmVSrmVVeJYtiz2uTA2Qzuww4BDg5FK0HftP0ZxSpMDPq69ItW2EUMDU8ngqMzimf5on5QAcz6wocCcxx97Xuvg6YA4wIr7V393nu7sC0nLaaRZmVzKrBzCqvklmR5zXNHuRPuPvpwNsA7r4WaNu8zydSGc04/NPJzBbnLBPzNOfA381sSc7rXdx9NUD42TmUdwOez1l3ZSgrVr4yT3lLKLOSWTWYWeVVMivmvKa5zNu7ZlYXOo6ZfQB4P8V6IhVlQF36UwLX5BzSKWR/d19lZp2BOWb2WBNv31jjCTlpyltCmZVMqtHMKq+SSbHnNc0e5MuBm4Bdzew84B7gohTriVRcKScQuPuq8PMl4GaS85teDIduCD9fCtVXAj1yVu8OrGqivHue8pZQZiWzajCzyqtkVsx5bXKA7O7TgHOBXwBrgRPcfXpT64lUAzNLtaRoZwcz26nhMTAceBiYCTTMkh0PzAiPZwLjwkzbYcBr4fDQbGC4mXUMEweGA7PDa2+Y2bAws3ZcTlvNosxKltVaZpVXybKY85r2Tnr1wLsku6NTXflCpNKas+WaQhfg5hD0NsC17n67mS0CrjezCcBzwAmh/izgKGAFyaSbz0NyfqGZXQAsCvXOD+ccApwBTAHaAbeFpaWUWcmcGs6s8iqZE3temxwgm9n3gM+R7O424Foz+5O7/yTNJxappPoSpdfdnwL65yl/BTgsT7kDZxZoazIwOU/5YqDf1vZVmZUsq7XMKq+SZTHnNc0e5JOAQe6+HsDMLgSWAAqvVL00h3YipMxKZtVgZpVXyayY85pmgPxso3ptgKfK0x2R0klm2Fa6FxWhzEom1WhmlVfJpNjzWnCAbGa/Ijkfaj2wzMxmh+fDSWbZilS3lJMDYqHMSubVUGaVV8m8yPNabA/yw+HnMuBvOeXzy9cdkdKKOLv5KLOSeTWUWeVVMi/mvBYcILv71a3ZEZFyiHnrtjFlVmJQK5lVXiUGMec1zVUsPgxcCPQBtmsod/ePlLFfIlvNYGvvAZ9JyqxkVS1mVnmVrIo9r2mutzgF+APJ72IkcD2gi5hLJljKJTJTUGYlo2ows1NQXiWjYs5rmgHy9u4+G8Ddn3T3c4FDytstka1nltwnPs0SGWVWMqlGM6u8SibFntc0l3l7J9yW70kz+yLwAtC5vN0SKY2M5nJrKbOSWTWYWeVVMivmvKYZIH8d2BH4Csl5UjsDp5azUyKlEvMEgiKUWcmsGsys8iqZFXNemxwgu/uC8PAN4OTydkektCLObkHKrGRZrWVWeZUsizmvxW4UcjPJRcvzcvfjy9IjkRIxs6hn2DamzErW1VJmlVfJutjzWmwP8mWt1otgv312594Frf62ErGYD//k0arhUV6lHGoos8qrZF7MeS12o5C5rdkRkXJIc5mWWCizEoNayazyKjGIOa9pJumJZJIR99atSGyUWZHsiD2vGiBL1CI+PUokSsqsSHbEnNfUe8fNbNtydkSkHOos3ZKWmdWb2f1mdmt43svMFpjZcjO7zszahvJtw/MV4fWeOW2cE8ofN7Mjc8pHhLIVZnb21n52ZVayqJSZVV5Fyivm79gmB8hmNsTMHgKWh+f9zezS9B9XpDLMkvvEp1ma4avAoznPLwJ+5e69gXXAhFA+AVjn7nsCvwr1MLM+wBigLzACuCL8QagHLie51WwfYGyo24LPrcxKNpUhs8qrSJnE/h2bZg/yJcAxwCsA7v4Aug2mZIRZuiVdW9YdOBr4fXhuwKHAjaHKVGB0eDwqPCe8flioPwqY7u7vuPvTwApgSFhWuPtT7r4BmB7qtoQyK5lVqswqryLlF/N3bJoBcp27P9uo7L0U64lUlNGs+8R3MrPFOcvEPE1eDPwv8H54/gHgVXffGJ6vBLqFx92A5wHC66+F+pvKG61TqLwllFnJpBJnVnkVKaPYv2PTTNJ73syGAB52UZ8FPJFiPZGKa8YlaNa4++BCL5rZMcBL7r7EzA5uKM5T1Zt4rVB5vq4WvIlAE5RZyaxSZFZ5FWkdMX/Hphkgn0FyCGh34EXgH6FMpOqV8Ao0+wPHmtlRwHZAe5Kt3Q5m1iZswXYHVoX6K4EewEozawPsDKzNKW+Qu06h8uZSZiWzSpRZ5VWkFcT8Hdvk4N/dX3L3Me7eKSxj3H1NU+uJVJpZuskDaSYQuPs57t7d3XuSTAC4w91PBO4EPh2qjQdmhMczw3PC63e4u4fyMWEGbi+gN7AQWAT0DjN224b3mNmSz63MSlaVKrPKq0j5xf4d2+QeZDP7HXl2Q7t7vvNHRKpKK1yj8TvAdDP7EXA/cHUovxr4o5mtINmqHQPg7svM7HrgEWAjcKa7vwdgZl8GZgP1wGR3X9aSDimzkmVlzqzyKlJCMX/HpjnF4h85j7cDjmPzE51FqlLDBIJSc/e7gLvC46dIZsc2rvM2cEKB9S8ELsxTPguYVYIuKrOSSeXIrPIqUh6xf8c2OUB29+tyn5vZH4E5ad9ApJIivgtmQcqsZFmtZVZ5lSyLOa8tudV0L+BDpe6ISMk18w4+EVNmJRuUWVBeJSsiz2uac5DX8d/zo+pIzvXY6ttqirQGy3vFl7gps5JltZZZ5VWyLOa8Fh0gh7uS9AdeCEXvh1mCIlXPgDbNuEhjDJRZybJay6zyKlkWe16LfrQQ1Jvd/b2wKLiSKWaWaomFMitZV0uZVV4l62LOa5qx/0IzG1j2noiUWDLDNt0SGWVWMqlGM6u8SibFnteCp1jk3LnkAOA0M3sSeJPkd+LurkBLdbO4Z9g2psxK5tVQZpVXybzI81rsHOSFwEBgdCv1RaTkynGNxiqmzErm1VBmlVfJvJjzWmyAbADu/mQr9UWkpBoO/9QQZVYyrcYyq7xKpsWe12ID5F3N7BuFXnT3X5ahPyIlZNRHvHWbhzIrGVdTmVVeJePizmuxAXI9sCNEfJE7iZoR9/lReSizkmk1llnlVTIt9rwWGyCvdvfzW60nIqWW4dmzLaTMSrbVVmaVV8m2yPPa5DnIIlkW8wSCPGrqw0qcaiizNfNBJV4x57XYAPmwVuuFSBnEfvgnD2VWMq3GMqu8SqbFnteCA2R3X9uaHREph5i3bhtTZiUGtZJZ5VViEHNeI76Ldnp77dmTwQM+ytBBA9h/6GAAzvnOt+nfb28+tt++fObTx/Hqq69WuJet77JLfs2gAf0Y2L8vl/76YgB+dP4P2eND3Rg6aABDBw3g9ttmVbiXhRlQb+kWyY58eQW44rJL2bfvXgzs35fvnv2/FexhZeTL60033sDA/n3Zvm0dSxYvrnAPm6bMxunVV19l7Gc/Tf9+ezPgo/swf9481q5dy9EjjqDfPr05esQRrFu3rtLdbHWXXPwrBvbvy6AB/Rh30ljefvttDjv4wE3fr712340T/qd6L5Mde141QA5u/8edLFiylHsXJF8ihx1+BEuWPsyi+x+kd++P8POLflLhHrauZQ8/zB8m/467/28hC5c8wG2zbmXF8uUAnPXVr7NgyVIWLFnKiJFHVbinRVjc94mvZY3z+s+77uTWv85g0X0Pct8Dy/jaN75V4R62rkJ57du3H9Ov/wsHHHhQpbuYjjIbpW99/asMHz6CBx5+jIVLHmDvffbhFz/7KQcfehgPP7qcgw89jF/87KeV7mareuGFF7ji8ku4d/5ilix9mPfee48brpvO3Lvu3vT9OnTYxxk9+vhKd7WwyPOqAXIBhx8xnDZtkjNQhgwdxgsrV1a4R63rscceZciQYWy//fa0adOGAw/6JDNm3FzpbjWbpVyabMdsOzNbaGYPmNkyMzsvlPcyswVmttzMrjOztqF82/B8RXi9Z05b54Tyx83syJzyEaFshZmdXZrfQG246rdX8q3/PZttt90WgM6dO1e4R62rUF733mcfPrLXXpXuXrMos3F5/fXXueeef3HKqRMAaNu2LR06dODWv87gpJPHA3DSyeP568xbKtnNiti4cSNvvfVW8nP9erruttum19544w3+eecdfGpU9e5BhrjzqgEyyRbQp0YO5xNDBnH1767a4vVpUyZz5IiRFehZ5fTt24977vkXr7zyCuvXr+f222ax8vnnAfjNFZfxsf325fQvnFrVh8WSu/xYqiWFd4BD3b0/MAAYYWbDgIuAX7l7b2AdMCHUnwCsc/c9gV+FephZH2AM0BcYAVxhZvVmVg9cDowE+gBjQ11pJF9eVzzxBPfeczcHfmIoRxz6SRYvWlThXrauYnnNEmU2Pk8/9RSdOu3KxAmfZ9jg/Thj4hd48803eenFF+natSsAXbt25eWXXqpwT1tXt27d+NrXv8VH9tidXj260r79zhx+xPBNr8+85WYOPvQw2rdvX8FeFhd7Xss2QDazyWb2kpk9XK73KJU7/nkv8xbdxy233sZvr7yce+7+16bXLvrJhdS3acOYz51YwR62vr332Ydvfus7HDPiCI49egT77tufNm3acNrpZ/DI40+yYMlSPti1K2d/+5uV7mpRpdq69cR/wtNtwuLAocCNoXwq0LC5Pyo8J7x+mCXHmUYB0939HXd/GlgBDAnLCnd/yt03ANND3VaTlczmy+vG9zaybt06/nXvfH78059z0uc+g7tXuqutplBes0iZTScred24cSNL77+P004/g/mL72f7HXaoudMp8lm3bh23/nUGjy5/mqeeW8Wb69/kz3+6ZtPr11/3Zz7z2bEV7GE6Mee1nHuQp5CM3qvebuGwRufOnTl29HEsWrQQgGumTWXW325lyrQ/ZfYcmq1xyqkTmLfoPv5x57/ouMsu7Llnb7p06UJ9fT11dXWcOuE0Fi9eWOluFmWWbgE6mdninGXilm1ZvZktBV4C5gBPAq+6+8ZQZSXQLTzuBjwPEF5/DfhAbnmjdQqVt6YpZCCz+fLarVt3Rh93PGbGx4YMoa6ujjVr1lS4p60rX16zSJlNbQoZyGu37t3p1r07Q4YOBeC4//k0S++/j85durB69WoAVq9eza41dlrUHXP/Qc+evdh1113ZZpttGD36eObP+z8AXnnlFRYvWsjIo46ucC+bFnNeyzZAdvd/AVV/GZs333yTN954Y9Pjf8z5O3379uPvs2/n//3iIm68eSbbb799hXtZGS+FQ17PPfccM275C58ZM3bTHzSA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\n",
      "text/plain": [
       "<Figure size 720x720 with 18 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "lr = LogisticRegression(solver='liblinear', C = best_c, penalty = 'l1')\n",
    "lr.fit(X_train,y_train.values.ravel())\n",
    "y_pred_proba = lr.predict_proba(X_test.values)\n",
    "\n",
    "thresholds = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]\n",
    "\n",
    "plt.figure(figsize=(10,10))\n",
    "\n",
    "j = 1\n",
    "for i in thresholds:\n",
    "    y_test_predictions_high_recall = y_pred_proba[:,1] > i\n",
    "    \n",
    "    plt.subplot(3,3,j)\n",
    "    j += 1\n",
    "    \n",
    "    # Compute confusion matrix\n",
    "    cnf_matrix = confusion_matrix(y_test,y_test_predictions_high_recall)\n",
    "    np.set_printoptions(precision=2)\n",
    "\n",
    "    print (\"Recall metric in the whole testing dataset for threshold {}: {}\".format(i, cnf_matrix[1,1]/(cnf_matrix[1,0]+cnf_matrix[1,1])))\n",
    "\n",
    "    # Plot non-normalized confusion matrix\n",
    "    class_names = [0,1]\n",
    "    plot_confusion_matrix(cnf_matrix\n",
    "                          , classes=class_names\n",
    "                          , title='Threshold >= %s'%i) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from itertools import cycle\n",
    "\n",
    "lr = LogisticRegression(solver='liblinear', C = best_c, penalty = 'l1')\n",
    "lr.fit(X_train,y_train.values.ravel())\n",
    "y_pred_proba = lr.predict_proba(X_test.values)\n",
    "\n",
    "thresholds = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]\n",
    "colors = cycle(['navy', 'turquoise', 'darkorange', 'cornflowerblue', 'teal', 'red', 'yellow', 'green', 'blue','black'])\n",
    "\n",
    "plt.figure(figsize=(5,5))\n",
    "\n",
    "j = 1\n",
    "for i,color in zip(thresholds,colors):\n",
    "    y_test_predictions_prob = y_pred_proba[:,1] > i\n",
    "    \n",
    "    precision, recall, thresholds = precision_recall_curve(y_test,y_test_predictions_prob)\n",
    "    \n",
    "    # Plot Precision-Recall curve\n",
    "    plt.plot(recall, precision, color=color,\n",
    "                 label='Threshold: %s'%i)\n",
    "    plt.xlabel('Recall')\n",
    "    plt.ylabel('Precision')\n",
    "    plt.ylim([0.0, 1.05])\n",
    "    plt.xlim([0.0, 1.0])\n",
    "    plt.title('Precision-Recall example')\n",
    "    plt.legend(loc=\"lower left\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Logistic Regression fits well on the undersample dataset but the whole skewed dataset. We may try other classification models and compare the performance matrices before selecting the best for the skewed dataset.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <span style=\"color:#0b486b\">Tasks</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Try the provided examples and get yourself familiar with sample code before attempting portolio tasks.\n",
    "\n",
    "Please show your attempt to your tutor before you leave the lab, or email your files to your coordinator if you are an off-campus student."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <span style=\"color:#0b486b\">Summary</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this session we have covered: \n",
    " - how to apply different methods on skewed data.\n",
    " - how to apply cross-validation and tune hyperparameters in Python."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <span style=\"color:#0b486b\">Acknowledgement</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The above content references chapter 10 of \"Hands-On Machine Learning for Cybersecurity: Safeguard your system by making your machines intelligent using the Python ecosystem\", authored by Soma Halder, Sinan Ozdemir, Packt Publishing Ltd, 31 Dec 2018.  "
   ]
  }
 ],
 "metadata": {
  "_change_revision": 4,
  "_is_fork": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
